#include<stack>
#include<cmath>
#include<vector>
using namespace std;
class Solution {
public:
    vector<int> asteroidCollision(vector<int>& asteroids) {
        vector<int>st;
        for(auto e: asteroids){
            bool exist=true;
            while(!st.empty()&&st.back()>0&&exist){
                if(st.back()>0&&e<0){
                    if(abs(st.back())>abs(e))
                    {
                        exist=false;
                    }
                    else{
                        if(abs(st.back())==abs(e))
                            exist=false;
                        st.pop_back();
                    }
                }
                else
                    break;
            }
            if(exist)
                st.push_back(e);
        }
        return st;
    }
};